//

//
// Created by nilyang on 2021/11/13.
/// c++ version
#ifndef BASIC_GRAMMARS_H
#define BASIC_GRAMMARS_H

void test_ambiguous();

void func_ambiguous(int n, float f);

void func_gramma();

void func_enum_class();

void func_grammars();

/// 可变类型
enum Type {
    str, num
};

///  避免使用"裸"union，把它置于类当中形成类型域；
union Value {
    char *s;
    int i;
};
struct Entry {
    char *name;
    Type t;
    Value v; // 类型域
};

void func_union(Entry *p);

/// 强类型枚举
enum class Color {
    red, blue, green
};

enum class Traffic_light {
    green, yellow, red
};

void func_enum_class();

/// c++20 闭包
void func_cpp20_closure();

#endif //BASIC_GRAMMARS_H
